package com.cg.design.graphicdesignpattern.prototype.framework;

import java.util.HashMap;

/**
 * 使用Product接口复制实例的管理类
 *
 * @program: LeetCode->Manager
 * @description: 使用Product接口复制实例的管理类，负责使用复制实例的方法生成新的实例
 * @author: cg
 * @create: 2022-03-20 16:07
 **/
public class Manager {
    /**
     * 用于保存实例的“名字”和“实例”之间的对应关系
     */
    private HashMap<String, Product> showcase = new HashMap();

    /**
     * 注册方法，将“名字”和“Product”接口注册到showcase中
     *
     * @param name
     * @param product
     */
    public void register(String name, Product product) {
        showcase.put(name, product);
    }

    /**
     * 获取proto类的复制实例
     *
     * @param protoName
     * @return
     */
    public Product create(String protoName) {
        Product product = showcase.get(protoName);
        return product.createClone();
    }
}
